💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    미니프로젝트 9 | ✅저자: 이유정(박사)

    프로젝트 코드명: DynamicReportGen 프로젝트 유형: 사용자 활동 통계 리포트 생성기

    🖥️ 프로젝트 개요

    웹사이트나 앱에서 수집된 사용자 활동 데이터를 바탕으로,  
    사용자별 접속 횟수, 클릭 수, 구매 수 등 다양한 항목을 받아  
    가공된 통계 리포트를 생성하는 프로그램을 만듭니다.
    
    데이터 항목은 유동적이며, 항목 수나 종류가 사용자마다 다를 수 있으므로 **가변 키워드 인자**를 사용해 처리합니다.
    

    ◽ 이 프로젝트를 통해 자연스럽게 적용되는 내용

    • 함수 정의 및 호출
    • 반환값, 리턴문 활용
    • 기본값 매개변수
    • 가변 키워드 인자 (**kwargs)
    • 통계성 계산 처리 (합계, 비율 등)

    📄 기능 요구사항 (Functional Requirements)

    • FR-01 사용자 이름과 활동 정보를 받아 통계 리포트 생성
    • FR-02 활동 정보는 딕셔너리 형태로 유동적으로 입력받음 (ex. login=5, click=13 등)
    • FR-03 전체 활동 수 계산 후, 각 활동의 비율 출력
    • FR-04 활동이 없을 경우 기본 리포트 표시

    📄 비기능 요구사항 (Non-Functional Requirements)

    • 키워드 인자로 어떤 항목이 오든 처리 가능해야 함
    • 항목 수와 종류는 사용자마다 다를 수 있음
    • 비어 있는 경우 안내 메시지 출력
    • 전체 코드 가독성 유지

    ✅ 출력 포맷 구성:

    📊 [사용자 활동 리포트 - 영희]
    총 활동 수: 28회
    - login: 5회 (17.9%)
    - click: 13회 (46.4%)
    - purchase: 10회 (35.7%)
    
    📊 [사용자 활동 리포트 - 준호]
    활동 기록이 없습니다.
    

    ✅ 정답 코드:

    def generate_report(username, **activities):
        print(f"\n📊 [사용자 활동 리포트 - {username}]")
        
        if not activities:
            print("활동 기록이 없습니다.")
            return
    
        total = sum(activities.values())
        print(f"총 활동 수: {total}회")
        
        for key, value in activities.items():
            percent = (value / total) * 100
            print(f"- {key}: {value}회 ({percent:.1f}%)")
    
    # 테스트 실행
    generate_report("영희", login=5, click=13, purchase=10)
    generate_report("준호")  # 활동 없음
    

    🔍 코드 해설:

    • username은 필수 인자로 받고, 나머지 활동 항목은 **kwargs로 처리
    • if not activities:로 비어있는 활동도 유연하게 대응
    • 활동 수의 합을 기준으로 각 항목의 비율 계산
    • 실무에서 많이 쓰이는 데이터 요약 통계 형태와 유사
    TOP
    preload preload